package Principal;
import java.io.FileReader;

import javax.swing.JOptionPane;

import GestorDeErrores.Errores;
import GestorDeErrores.GestorErrores;
import LexicoBACKUP.Lexico;
import LexicoBACKUP.TipoToken;
import LexicoBACKUP.Token;
//import lexico2.Alexico;
//import lexico2.ExcepcionLexico;
import Sintactico.*;
import TablaDeSimbolos.TablaDeSimbolos;


public class Main2 {
	
	  // Método principal
	  public static void main(String[] args) {
		  GestorErrores gestor = new GestorErrores();
		  TablaDeSimbolos tablaSimbolos = new TablaDeSimbolos();
		  JOptionPane j = new JOptionPane(); 
		  String fichero = j.showInputDialog(null, "Introduce la ruta relativa del fichero a compilar", "Pruebas/");
		  if (fichero != null) {

			  try {	    	  
		    	  Lexico lexer = new Lexico(new FileReader(fichero), gestor, tablaSimbolos);
		    	  System.out.println("Analizando fichero: " + System.getProperty("user.dir") + 
		    			  			 "/" + fichero);
		    	  // Analiza token a token el fichero
		          for (Token sym = lexer.next_token(); sym.tipo != 0; sym = lexer.next_token()) {
		        	  
		              System.out.println("Token \"" + lexer.yytext() + "\"\t -> " + sym.toString());
		              
		          }       
		      }
		      catch (Exception e) {
		    	  if (fichero.length() > 0)
		    		  System.err.println("Error en proceso E/S con el fichero " + 
		    		  			 System.getProperty("user.dir") + "/" + fichero);
		       	  else System.err.println("Error en proceso E/S con el fichero: no hay parámetro");
		      }
		      // Muestra la lista de errores
		      gestor.muestraListaErrores();
			  
		  }
	  }
}